<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 会议模型类
 * @author wb_wenjie.wuwj <wb_wenjie.wuwj@alibaba-inc.com>
 * @copyright 2013-2-7 yahoo
 */

class Conference_m extends MY_Model
{
	function __construct()
	{
		parent::__construct();
		
		// 加载上传设置参数
		$this->config->load('upload');
	}
	
	/**
	 * 查询会议数量
	 */
	function get_conference_count()
	{
		return $this->count_all('conference');
	}
	
	/**
	 * 查询会议状态标识
	 * @param array $where 查询条件
	 * @param string $limit 返回结果数
	 * @return boolean
	 */
	function get_conference_state($where, $limit = '1')
	{
		return $this->get_state('conference', $where, $limit);
	}
	
	/**
	 * 查询会议内容
	 * @param array $where 查询条件
	 * @param string $order 排序方式
	 * @param string $limit 查询返回结果数
	 * @return boolean
	 */
	function get_conference($where, $order = 'ID DESC', $limit = '1')
	{
		$this->db->select("conference.*,column.fatherid,column.columnname,conference_content.content,conference_content.keyword");
		$this->db->from('conference');
		$this->db->join('column', 'column.id=conference.classid', 'LEFT');
		$this->db->join('conference_content', 'conference_content.conferenceid=conference.id', 'LEFT');
		$this->db->where($where);
		$this->db->order_by($order);
		$this->db->limit($limit);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	/**
	 * 根据偏移量查询会议内容，与分类表内联查询
	 * @param array $limit
	 * @param string $order
	 * @return array
	 */
	function show_conference($limit, $order = 'id desc')
	{
		$this->db->select("conference.*,column.fatherid,column.columnname");
		$this->db->from('conference');
		$this->db->join('column', 'column.id=conference.classid', 'LEFT');
		$this->db->order_by($order);
		$this->db->limit($limit['limit_end'], $limit['limit_from']);
		$query = $this->db->get();
		
		return $query->result_array();
	}
	
	/**
	 * 根据会议id删除会议及会议内容表记录，并解除与会议附件的id绑定
	 * @param array $id
	 * @return boolean
	 */
	function delete_conference_by_id($id)
	{
		$this->delete_content(array('conferenceid' => $id));
		$this->load->model('attachment_m');
		
		// 将要删除的会议附件表记录中bindid标记为0，不做删除
		foreach ($id as $value)
		{
			$this->attachment_m->update_attachment(array('bindid' => $value, 'type' => 'conference'), array('bindid' => 0));
		}
		
		$result = $this->delete_record('conference', array('id' => $id));
		return $result;
	}
	
	/**
	 * 删除会议内容表记录
	 * @param array $where 删除条件
	 * @return boolean
	 */
	function delete_content($where)
	{
		return $this->delete_record('conference_content', $where);
	}
	
	/**
	 * 添加会议内容
	 * @param array $conference 会议表内容
	 * @param array $content 会议内容表
	 * @param array $attachment 附件内容
	 * @return boolean|unknown
	 */
	function insert_conference($conference, $content, $attachment)
	{
		$result = $this->insert('conference', $conference);
		$conference_id = $this->db->insert_id();
		if(!$conference_id)
		{
			return FALSE;
		}
		else
		{
			$content['conferenceid'] = $conference_id;
			$this->insert_conference_content($content);
			if (!empty($attachment))
			{
				$this->load->model('attachment_m');
				$attachment['bindid'] = $conference_id;
				$this->attachment_m->insert_attachment($attachment);
			}
			
			return $conference_id;
		}
	}
	
	/**
	 * 添加会议内容记录
	 * @param array $data 添加内容
	 * @return boolean
	 */
	function insert_conference_content($data)
	{
		// @TODO 处理会议ID存在的问题
		return $this->insert('conference_content', $data);
	}
	
	/**
	 * 更新会议
	 * @param array $where 更新条件
	 * @param array $data 更新内容
	 * @return boolean
	 */
	function update_conference($where, $data)
	{
		return $this->update('conference', $where, $data);
	}
	
	/**
	 * 更新会议内容表
	 * @param array $where 更新条件
	 * @param array $data 更新内容
	 * @return boolean
	 */
	function update_conference_content($where, $data)
	{
		return $this->update('conference_content', $where, $data);
	}
}